As the use of computers become more popular and common in the everyday life of people, many applications are developed for various different usages. An application as used herein generally refers to a program or a suite of programs executable by one or more processors to perform one or more tasks and/or functions. Currently, many applications are developed to conduct transactions between multiple machines (e.g., servers and clients). These transactions may or may not be carried over a network. Moreover, these applications may or may not interact with other applications (e.g., requesting information from another application, providing data to another application, updating records using another application, etc.).
An important part of the development of applications is quality assurance, which involves testing of applications. For applications that interact with other applications and/or users, tests are needed to test the way the applications interact with each other. Currently, software developers routinely test such applications by manually interacting with these applications to emulate interaction with other applications and/or users in a variety of scenarios.
The above approach to test applications suffers from many disadvantages. First, the above approach is labor intensive because it requires a quality assurance engineer to manually create a series of predetermined user interactions and/or application interactions with the application under test. Further, additional effort is needed to analyze the test result. When the test has to be re-executed in order to test another revision of the application, the quality assurance engineer has to manually repeat the above procedures.